package com.fivefu.core.camera.services;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fivefu.core.camera.vo.EventStatusVo;
import com.fivefu.core.camera.vo.request.*;
import com.fivefu.core.camera.vo.response.EventCameraBean;
import com.fivefu.core.camera.vo.response.EventExamineBean;
import com.fivefu.core.camera.vo.response.SceneCameraBean;
import com.fivefu.core.skyeye.event.vo.SceneVo;

import java.util.Map;

public interface SceneEventService {

    /**
     * 编辑场景
     * @param sceneVo 场景信息
     * @param dbSceneEventVo 场景生成工单信息
     * @param userid 操作用户编号
     */
    boolean editSceneEvent(SceneVo sceneVo, DbSceneEventVo dbSceneEventVo, String userid);

    /**
     * 查询场景详情
     * @param id 场景编号
     * @return
     */
    Map<String, Object> querySceneEvent(Long id);

    /**
     * 查询场景下探头列表
     * @param sceneId 场景编号
     * @param page 页码
     * @param limit 数量
     * @return
     */
    Page<SceneCameraBean> querySceneCamera(Long sceneId, Integer page, Integer limit);

    /**
     * 查询增加探头列表
     * @param sceneId 探头编号
     * @param cameraName 探头名称(模糊)
     * @param cameraCode 探头标识(模糊)
     * @param labelName 标签名称
     * @param areaid 区域编号
     * @param streetid 所属街道
     * @param cameraManufacturer 厂商
     * @param page 页码
     * @param limit 数量
     * @return
     */
    Page<SceneCameraBean> queryAddCamera(Long sceneId, String cameraName, String cameraCode, String labelName, String areaid,String streetid,
                                                String cameraManufacturer, String cameraStatus, String onlineStatus, Integer page, Integer limit);

    /**
     * 查询事件下案卷列表
     * @param sceneCode 场景标识
     * @param areaid 所属区域
     * @param cameraName 探头名称
     * @param onlineStatus 在线状态
     * @param sStime 开始时间
     * @param sEtime 开始时间
     * @param eStime 结束时间
     * @param eEtime 结束时间
     * @param queryType 查询类型(1:待审核, 2:审核不合格, 不传值:全部)
     * @param page 页码
     * @param limit 数量
     * @return
     */
    public Page<EventCameraBean> queryEventList(String sceneCode, String areaid, String cameraName, String onlineStatus,
                                                String sStime, String sEtime, String eStime, String eEtime, Integer queryType, Integer page, Integer limit);

    /**
     * 查询事件详情
     * @param eventId 事件编号
     * @return
     */
    Map<String, Object> queryEventDetail(Long eventId);

    /**
     * 拟生成工单模板
     * @param eventId 事件编号
     * @return
     */
    EventExamineBean createOrderTemplate(Long eventId);

    /**
     * 事件审核
     * @param examineVo 审核信息
     * @param workorderVo 工单信息
     * @param userid 操作用户编号
     */
    Long examineEvent(EventExamineVo examineVo, WorkorderVo workorderVo, String userid);

    /**
     * 生成工单
     * @param workorderVo 工单信息
     * @param userid 操作用户编号
     * @return
     */
    Long createWorkorder(WorkorderVo workorderVo, String userid);

    /**
     * 批量增加场景下探头
     * @param cameraCode 探头唯一标识（用逗号隔开）
     * @param dbSceneCameraVo 场景探头统一配置信息
     * @param userid 操作用户编号
     */
    boolean addSceneCamera(String cameraCode, DbSceneCameraVo dbSceneCameraVo, String userid);

    /**
     * 批量移除场景下探头
     * @param sceneId 场景编号
     * @param cameraCode 探头唯一标识(用逗号隔开)
     * @param userid 操作用户
     */
    void removeSceneCamera(Long sceneId, String cameraCode, String userid);

    /**
     *同步生成工单数据
     */
    void synExamineEventOrder(SynEventWorkorderService synEventWorkorderService, EventStatusVo eventStatusVo);
}
